package com.study.service.impl;

import javax.annotation.Resource;
import com.study.mapper.UserMapper;
import com.study.model.Option;
import com.study.model.User;
import com.study.service.UserServiceInf;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;

@Service("userService")// 告诉框架，这个类是一个service，这样框架就把这个类当作service对待
// 用于标注业务层组件,表示定义一个bean，自动根据bean的类名实例化一个首写字母为小写的bean，
// 如果需要自己改名字则:@Service("你自己改的bean名")。
public class UserServiceInfImpl implements UserServiceInf {
    @Resource
    //@Autowired
    private UserMapper userDao;

    public User getUserById(int userId) {
        // TODO Auto-generated method stub
        // 业务逻辑实现的地方，对数据库的查询结果进行处理
        // 传入的参数和查询的结果的处理全都在这里面写
        User user = this.userDao.getUserById(userId);
        return user;
    }
    public void updateUserById(int userId,String name,String password) {
        // TODO Auto-generated method stub
        this.userDao.updateUserById(userId,name,password);

    }
    public String addUserById(String userId,String name,String password,String userType,String roleId) {
        int uId = Integer.parseInt(userId);
        int rId = Integer.parseInt(roleId);
        int type = Integer.parseInt(userType);
        // 先判断id重复没有，重复了的话就直接return String 插入失败id重复了，当前用户数量：【？？】
        int count = this.userDao.judgeId(uId).getCount();
        int totalCount = this.userDao.queryUserCount().getCount();//queryUserCount()和judgeId(uId)返回的是两个不同的实例
        String judgeResult;
        if(count!=0){
            judgeResult ="id重复，请重新输入，当前用户数量为"+totalCount;
            return judgeResult;
         }
         this.userDao.addUserById(uId, name, password, type, rId);
        judgeResult = "添加成功，当前用户数量为" + (totalCount+1);
        return judgeResult;
        // 返回一个成功的String，和当前用户数量
    }
    /*
    获取option列表
     */
    public HashMap<Integer, String> getOptionList(int typeId){
        List<Option> optionList = this.userDao.getOptionList(typeId);
        HashMap<Integer, String> optionMap = new HashMap<Integer, String>();
        for(Option opt : optionList){
            optionMap.put(opt.getTypeKey(), opt.getTypeValue());
        }
        return optionMap;
    }

}